//
// CPSLocatedBindable.java
// Copyright (C) 2010  "Naush" <naush _ hotmail _ fr>
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>./* ----------------------------------------------------------------------------







package org.ryzom.nel.threed;

import org.ryzom.nel.misc.CVector;
import org.ryzom.nel.misc.IStream;
import org.ryzom.nel.misc.IStreamable;

public class CPSLocatedBindable extends IStreamable {
  private long swigCPtr;

  public CPSLocatedBindable(long cPtr, boolean cMemoryOwn) {
    super(nel3dJNI.CPSLocatedBindable_SWIGUpcast(cPtr), cMemoryOwn);
    swigCPtr = cPtr;
  }

  public static long getCPtr(CPSLocatedBindable obj) {
    return (obj == null) ? 0 : obj.swigCPtr;
  }

  protected void finalize() {
    delete();
  }

  public synchronized void delete() {
    if (swigCPtr != 0) {
      if (swigCMemOwn) {
        swigCMemOwn = false;
        nel3dJNI.delete_CPSLocatedBindable(swigCPtr);
      }
      swigCPtr = 0;
    }
    super.delete();
  }

  public void serial(IStream f) {
    nel3dJNI.CPSLocatedBindable_serial(swigCPtr, this, IStream.getCPtr(f), f);
  }

  public void finalize_c() {
    nel3dJNI.CPSLocatedBindable_finalize_c(swigCPtr, this);
  }

  public void setActive(boolean active) {
    nel3dJNI.CPSLocatedBindable_setActive(swigCPtr, this, active);
  }

  public boolean isActive() {
    return nel3dJNI.CPSLocatedBindable_isActive(swigCPtr, this);
  }

  public long getType() {
    return nel3dJNI.CPSLocatedBindable_getType(swigCPtr, this);
  }

  public long getPriority() {
    return nel3dJNI.CPSLocatedBindable_getPriority(swigCPtr, this);
  }

  public void step(TPSProcessPass pass) {
    nel3dJNI.CPSLocatedBindable_step(swigCPtr, this, pass.swigValue());
  }

  public void notifyTargetRemoved(CPSLocated ptr) {
    nel3dJNI.CPSLocatedBindable_notifyTargetRemoved(swigCPtr, this, CPSLocated.getCPtr(ptr), ptr);
  }

  public void releaseRefTo(CParticleSystemProcess arg0) {
    nel3dJNI.CPSLocatedBindable_releaseRefTo(swigCPtr, this, CParticleSystemProcess.getCPtr(arg0), arg0);
  }

  public void releaseAllRef() {
    nel3dJNI.CPSLocatedBindable_releaseAllRef(swigCPtr, this);
  }

  public boolean completeBBox(SWIGTYPE_p_NLMISC__CAABBox arg0) {
    return nel3dJNI.CPSLocatedBindable_completeBBox(swigCPtr, this, SWIGTYPE_p_NLMISC__CAABBox.getCPtr(arg0));
  }

  public boolean doesProduceBBox() {
    return nel3dJNI.CPSLocatedBindable_doesProduceBBox(swigCPtr, this);
  }

  public IDriver getDriver() {
    long cPtr = nel3dJNI.CPSLocatedBindable_getDriver(swigCPtr, this);
    return (cPtr == 0) ? null : new IDriver(cPtr, false);
  }

  public CFontGenerator getFontGenerator() {
    long cPtr = nel3dJNI.CPSLocatedBindable_getFontGenerator__SWIG_0(swigCPtr, this);
    return (cPtr == 0) ? null : new CFontGenerator(cPtr, false);
  }

  public CFontManager getFontManager() {
    long cPtr = nel3dJNI.CPSLocatedBindable_getFontManager__SWIG_0(swigCPtr, this);
    return (cPtr == 0) ? null : new CFontManager(cPtr, false);
  }

  public SWIGTYPE_p_NLMISC__CMatrix getSysMat() {
    return new SWIGTYPE_p_NLMISC__CMatrix(nel3dJNI.CPSLocatedBindable_getSysMat(swigCPtr, this), false);
  }

  public SWIGTYPE_p_NLMISC__CMatrix getLocalToWorldMatrix() {
    return new SWIGTYPE_p_NLMISC__CMatrix(nel3dJNI.CPSLocatedBindable_getLocalToWorldMatrix(swigCPtr, this), false);
  }

  public SWIGTYPE_p_NLMISC__CMatrix getInvertedSysMat() {
    return new SWIGTYPE_p_NLMISC__CMatrix(nel3dJNI.CPSLocatedBindable_getInvertedSysMat(swigCPtr, this), false);
  }

  public SWIGTYPE_p_NLMISC__CMatrix getViewMat() {
    return new SWIGTYPE_p_NLMISC__CMatrix(nel3dJNI.CPSLocatedBindable_getViewMat(swigCPtr, this), false);
  }

  public SWIGTYPE_p_NLMISC__CMatrix getInvertedViewMat() {
    return new SWIGTYPE_p_NLMISC__CMatrix(nel3dJNI.CPSLocatedBindable_getInvertedViewMat(swigCPtr, this), false);
  }

  public void setupDriverModelMatrix() {
    nel3dJNI.CPSLocatedBindable_setupDriverModelMatrix(swigCPtr, this);
  }

  public CVector computeI() {
    return new CVector(nel3dJNI.CPSLocatedBindable_computeI(swigCPtr, this), true);
  }

  public CVector computeIWithZAxisAligned() {
    return new CVector(nel3dJNI.CPSLocatedBindable_computeIWithZAxisAligned(swigCPtr, this), true);
  }

  public CVector computeJ() {
    return new CVector(nel3dJNI.CPSLocatedBindable_computeJ(swigCPtr, this), true);
  }

  public CVector computeK() {
    return new CVector(nel3dJNI.CPSLocatedBindable_computeK(swigCPtr, this), true);
  }

  public CVector computeKWithZAxisAligned() {
    return new CVector(nel3dJNI.CPSLocatedBindable_computeKWithZAxisAligned(swigCPtr, this), true);
  }

  public CPSLocated getOwner() {
    long cPtr = nel3dJNI.CPSLocatedBindable_getOwner__SWIG_0(swigCPtr, this);
    return (cPtr == 0) ? null : new CPSLocated(cPtr, false);
  }

  public void setName(String name) {
    nel3dJNI.CPSLocatedBindable_setName(swigCPtr, this, name);
  }

  public String getName() {
    return nel3dJNI.CPSLocatedBindable_getName(swigCPtr, this);
  }

  public void setLOD(SWIGTYPE_p_TPSLod lod) {
    nel3dJNI.CPSLocatedBindable_setLOD(swigCPtr, this, SWIGTYPE_p_TPSLod.getCPtr(lod));
  }

  public SWIGTYPE_p_TPSLod getLOD() {
    return new SWIGTYPE_p_TPSLod(nel3dJNI.CPSLocatedBindable_getLOD(swigCPtr, this), true);
  }

  public boolean hasParticles() {
    return nel3dJNI.CPSLocatedBindable_hasParticles(swigCPtr, this);
  }

  public boolean hasEmitters() {
    return nel3dJNI.CPSLocatedBindable_hasEmitters(swigCPtr, this);
  }

  public void setExternID(long id) {
    nel3dJNI.CPSLocatedBindable_setExternID(swigCPtr, this, id);
  }

  public long getExternID() {
    return nel3dJNI.CPSLocatedBindable_getExternID(swigCPtr, this);
  }

  public void basisChanged(TPSMatrixMode arg0) {
    nel3dJNI.CPSLocatedBindable_basisChanged(swigCPtr, this, arg0.swigValue());
  }

  public void motionTypeChanged(boolean arg0) {
    nel3dJNI.CPSLocatedBindable_motionTypeChanged(swigCPtr, this, arg0);
  }

  public boolean getUserMatrixUsageCount() {
    return nel3dJNI.CPSLocatedBindable_getUserMatrixUsageCount(swigCPtr, this);
  }

  public void enumTexs(SWIGTYPE_p_std__vectorT_NLMISC__CSmartPtrT_NL3D__ITexture_t_t arg0, IDriver arg1) {
    nel3dJNI.CPSLocatedBindable_enumTexs(swigCPtr, this, SWIGTYPE_p_std__vectorT_NLMISC__CSmartPtrT_NL3D__ITexture_t_t.getCPtr(arg0), IDriver.getCPtr(arg1), arg1);
  }

  public void setZBias(float arg0) {
    nel3dJNI.CPSLocatedBindable_setZBias(swigCPtr, this, arg0);
  }

  public void onShow(boolean arg0) {
    nel3dJNI.CPSLocatedBindable_onShow(swigCPtr, this, arg0);
  }

  public void systemDateChanged() {
    nel3dJNI.CPSLocatedBindable_systemDateChanged(swigCPtr, this);
  }

}
